/*
 * @Author: Aro
 * @Date: 2021-10-08 11:56:09
 */

// 给你一个字符串 s ，请你去除字符串中重复的字母，使得每个字母只出现一次。需保证 返回结果的字典序最小（要求不能打乱其他字符的相对位置）。

/**
 * @param {string} s
 * @return {string}
 */
var removeDuplicateLetters = function(s) {
  var result = '';
  for (var i = 0; i < s.length; i++) {
    if (result.indexOf(s[i]) === -1) {
      if ((result[result.length - 1] || '') < s[i]) {
        result += s[i];
      } else {
        var later = s.slice(i, s.length + 1);
        for (var j = result.length - 1; j >= 0; j--) {
          if (result[j] < s[i] || later.indexOf(result[result.length - 1]) === -1) {
            break;
          }
          result = result.slice(0, result.length - 1);
        }
        result += s[i];
      }
    }
  }
  return result;
};

console.log("====== start ======");

let test1 = removeDuplicateLetters('bcabc'); // abc
let test2 = removeDuplicateLetters('cbacdcbc'); // acdb
let test3 = removeDuplicateLetters('cdadabcc'); // adbc
let test4 = removeDuplicateLetters('acbac'); // abc

console.log('test1的值:' + test1 + ',test2的值:' + test2 + ',test3的值:' + test3 + ',test4的值:' + test4);

console.log("====== end ======");

// cdadabcc
// cd   a  d>a d还有 d出栈 c>a c还有 c出栈
// ad   a 栈存在a 什么也不做
// ad   b d>b d没有 b进栈
// adb  c  b<c c进栈
// adbc c 栈存在c 什么也不做

// acbac
// ac  b